using System;
using System.Collections.Generic;
using System.Text;
using IGCal.GA;
using IGCal.DB;

namespace Calcio
{
  /// <summary>
  /// Project settings (sempre su database flat con cache)
  /// </summary>
  public class ProjectSettings : IMaxElementiInListaSetting, ISettingsSerializerProviderSetting
  {

      private string _AnnoCorrente = "2007/2008";
      private string _modelloPartiteStagione07=@"C:\Progetti\Projects\Calcio\Calcio\modelloWord\modello.dot";
      private string _ModelloXlsDistinta = "";
      private string _CodiceDocumentoDirigenti = "";
      private string _NomeSquadra = "F.C. Ganaceto";
      private string _StadioCasalingo = "Nando Bisi di Ganaceto";
      private int _PrimaRigaDati = -1;
      private string _CategoriaCampionatoCorrente = string.Empty;
      private string _DescrizioneCoppa = string.Empty;

      

      //public string CodiceDocumentoDirigenti
      //{
      //    get
      //    {
      //        try
      //        {
      //            _CodiceDocumentoDirigenti = GlobalRegistry.GetGlobalRegValue("CodiceDocumentoDirigenti", Globals.Connection);
      //        }
      //        catch
      //        {
                  
      //        }

      //        return _CodiceDocumentoDirigenti;
      //    }
      //    set
      //    {
      //        try
      //        {
      //            GlobalRegistry.SetGlobalRegValue("CodiceDocumentoDirigenti", value.ToString(), Globals.Connection);
      //        }

      //        catch
      //        {
      //        }
      //        _CodiceDocumentoDirigenti = value;
      //    }
      //}

      public string NomeSquadra
      {
          get
          {
              try
              {
                  _NomeSquadra = GlobalRegistry.GetGlobalRegValue("NomeSquadra", Globals.Connection);
              }
              catch
              {

              }

              return _NomeSquadra;
          }
          set
          {
              try
              {
                  GlobalRegistry.SetGlobalRegValue("NomeSquadra", value.ToString(), Globals.Connection);
              }

              catch
              {
              }
              _NomeSquadra = value;
          }
      }

      public string StadioCasalingo
      {
          get
          {
              try
              {
                  _StadioCasalingo = GlobalRegistry.GetGlobalRegValue("StadioCasalingo", Globals.Connection);
              }
              catch
              {

              }

              return _StadioCasalingo;
          }
          set
          {
              try
              {
                  GlobalRegistry.SetGlobalRegValue("StadioCasalingo", value.ToString(), Globals.Connection);
              }

              catch
              {
              }
              _StadioCasalingo = value;
          }
      }
     
      public string AnnoCorrente
      {
          get
          {
              try
              {
                  _AnnoCorrente = GlobalRegistry.GetGlobalRegValue("AnnoCorrente", Globals.Connection);
              }
              catch
              {
                  
              }

              return _AnnoCorrente;
          }
          set {
              try
              {
                  GlobalRegistry.SetGlobalRegValue("AnnoCorrente", value.ToString(), Globals.Connection);
              }
                  
                catch
                {
                }
              _AnnoCorrente = value; 
          }
      }
    
    #region IMaxElementiInListaSetting Members

    private int? _MaxElementiInLista = null;
      
   
      public int MaxElementiInLista
    {
      get
      {
        if (_MaxElementiInLista == null)
        {
          try
          {
#warning Fare il parse indipendente dalla culture
            _MaxElementiInLista = int.Parse(GlobalRegistry.GetGlobalRegValue("MaxElementiInLista", Globals.Connection), System.Globalization.NumberFormatInfo.InvariantInfo);
          }
          catch
          {
            _MaxElementiInLista = 500;
          }
        }

        return (int)_MaxElementiInLista;
      }
      set
      {
        if (_MaxElementiInLista == value)
          return;

#warning Mettere value.ToString formattato indipendente dalla culture
        GlobalRegistry.SetGlobalRegValue("MaxElementiInLista", value.ToString("G", System.Globalization.NumberFormatInfo.InvariantInfo), Globals.Connection);
        _MaxElementiInLista = value;
      }
    }

    #endregion

    #region ISettingsSerializerProviderSetting Members

    private int? _SettingsSerializerProvider = null;

    public SettingsSerializerProvider SettingsSerializerProvider
    {
      get
      {
        if (_SettingsSerializerProvider == null)
        {
          try
          {
            _SettingsSerializerProvider = int.Parse(GlobalRegistry.GetGlobalRegValue("SettingsSerializerProvider", Globals.Connection));
          }
          catch
          {
            _SettingsSerializerProvider = (int) SettingsSerializerProvider.FileSystem;
          }

        }
        return (SettingsSerializerProvider) _SettingsSerializerProvider;
      }
      set
      {
        GlobalRegistry.SetGlobalRegValue("SettingsSerializerProvider", ((int)value).ToString(), Globals.Connection);
        _SettingsSerializerProvider = (int)value;
      }
    }

    #endregion

    #region Prima riga dati

      public int PrimaRigaDati
      {
          get
          {
              try
              {
                  _PrimaRigaDati = Convert.ToInt32(GlobalRegistry.GetGlobalRegValue("PrimaRigaDati", Globals.Connection));
              }
              catch
              {

              }

              return _PrimaRigaDati;
          }
          set
          {
              try
              {
                  GlobalRegistry.SetGlobalRegValue("PrimaRigaDati", value.ToString(), Globals.Connection);
              }

              catch
              {
              }
              _PrimaRigaDati = value;
          }
      }



    #endregion

      public string DescrizioneCoppa
      {
          get
          {
              try
              {
                  _DescrizioneCoppa = GlobalRegistry.GetGlobalRegValue("DescrizioneCoppa", Globals.Connection);
              }
              catch
              {

              }

              return _DescrizioneCoppa;
          }
          set
          {
              try
              {
                  GlobalRegistry.SetGlobalRegValue("DescrizioneCoppa", value.ToString(), Globals.Connection);
              }

              catch
              {
              }
              _DescrizioneCoppa = value;
          }
      }


      public string CategoriaCampionatoCorrente
      {
          get
          {
              try
              {
                  _CategoriaCampionatoCorrente = GlobalRegistry.GetGlobalRegValue("CategoriaCampionatoCorrente", Globals.Connection);
              }
              catch
              {

              }

              return _CategoriaCampionatoCorrente;
          }
          set
          {
              try
              {
                  GlobalRegistry.SetGlobalRegValue("CategoriaCampionatoCorrente", value.ToString(), Globals.Connection);
              }

              catch
              {
              }
              _CategoriaCampionatoCorrente = value;
          }
      }
}
}
